/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.marcelo.agro.lotes.presenter;

import java.math.BigDecimal;
import java.util.prefs.Preferences;
import org.marcelo.agro.constantes.IConstantes;
import org.marcelo.agro.core.UtilidadesFormatos;
import org.marcelo.agro.core.api.ILotes;
import org.marcelo.agro.entidades.UnidadMedidaSuperficie;
import org.openide.util.Lookup;
import org.openide.util.NbPreferences;

/**
 *
 * @author marcelo
 */
public class LotesPresenter {
    
    ILotes il ;
    private static String KEY_UNIDAD_MEDIDA_SUPERFICIE_PREFERIDA = IConstantes.PREF_keyUnidadMedidaSuperficie;

    private Preferences nodo = NbPreferences.root();
    private UnidadMedidaSuperficie unidadMedidaSuperficie;
    
    
    public LotesPresenter() {
        il = Lookup.getDefault().lookup(ILotes.class);
        String superficiePreferidaId = nodo.get(KEY_UNIDAD_MEDIDA_SUPERFICIE_PREFERIDA, "1");
        unidadMedidaSuperficie = il.getUnidadSuperficieById(Integer.parseInt(superficiePreferidaId));
    }
    
    /**
     * Metodo para obtener el total de superficie registrada en el sistema
     * consulta en la base de datos luego realiza la conversion a la unidad de medida
     * predeterminada del sistema
     * @return 
     */
    public String getTotalSuperficie() {
        BigDecimal total = il.getTotalSuperficie();
        return formatNumero(total);
    }

    public String getTotalSuperficieAlquilada() {
       BigDecimal totalAlquilado = il.getTotalSuperficieAlquilada();
       return formatNumero(totalAlquilado);
    }
    
    private String formatNumero(BigDecimal total) throws NullPointerException{
        if (total == null) {
            throw new NullPointerException("total no puede ser NULL");
        }
        StringBuilder sb = new StringBuilder();
        String separador = " ";
        total = il.fundamentalAsuperficie(total, unidadMedidaSuperficie.getFactorMultiplicacion());
        sb.append(UtilidadesFormatos.getDefault().getFormatoNumero(total));
        sb.append(separador);
        sb.append(unidadMedidaSuperficie.getSimbolo());
        
        return sb.toString();
    }

    public String getTotalSuperficiePropia() {
        BigDecimal totalPropia = il.getTotalSuperficiePropia();
        return formatNumero(totalPropia);
    }
    
    
   
    
}
